<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use Hash;
use Mail;
use Session;
use Validator;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Gregwar\Captcha\CaptchaBuilder;
use App\Http\Requests\RegisterRequest;


class LoginController extends Controller
{
    //登录页面
    public function getLogin()
    {
    	// 显示模板
    	return view('login.login');
    }

    public function getLog()
    {
        return view('login.log');
    }

   /**
    * 显示后台登录验证
    */
   public function postCheck(Request $request)
   {
    // 查看用户是否存在
    $user=DB::table('users')->where('username',$request->input('username'))->first();
    // dd($user);
    if($user){
        // 检测密码是否一致
        if($request->input('password')==$user->password){
            session(['id'=>$user->id]);
            return redirect('/admin')->with('success','欢迎登陆美丽说后台管理页面');
        }else{
            return back()->with('error','用户名或密码不正确');
        }
    }else{
       return back()->with('error','登陆错误'); 
    }
    
   }

   /**
    * 显示前台登录验证
    */
    public function postLook(Request $request)
   {
    // 查看用户是否存在
    $users=DB::table('member')->where('user',$request->input('user'))->first();
    if($users){
        // 检测密码是否一致
        if(Hash::check($request->input('pass'),$users->pass)){

            session(['id'=>$users->id]); 
            session(['member'=>$users->user]); 
                //获取session所有数据
            // $data = $request->session()->all();
                //从session移除数据
            // $request->session()->forget('member');
            // $request->session()->forget('id');


            return redirect('/')->with('success','欢迎登陆美丽说前台管理页面');

            // $request->session()->put('member', $users->id);
            // return view('layout.header',['mmm'=>$aa]);
        }else{
            return back()->with('error','用户名或密码不正确');
        }
    }else{
       return back()->with('error','登陆错误'); 
    }
    
   }


    //前台用户退出
    public function logout(Request $request){
        //从session移除数据
        $request->session()->forget('member');
        $request->session()->forget('id');


        return redirect('/')->with('logout','退出成功');

    }


  
   // 注册页面
   public function register()
   {
    return view('login.register');
   }
    // 注册处理
   public function doregister(RegisterRequest $request)
   {
        // 验证验证码是否一致
        if ($request->input('vcode') != session('Vcode')) {
           // 返回
            return back()->with('error','验证码错误');
        }
        // dd($request->all());
        // 提取数据 进行处理
        $data=$request->only(['user','email','pass']);
        $data['pass']=Hash::make($data['pass']);
        $data['token']=str_random(50);

        // dd($data);
        // 执行数据插入
        $id=DB::table('member')->insertGetId($data);
        // dd($id);
        if($id){
                //成功 重定向 发送激活邮件
                // 发送邮件
            $this->sendMail($id,$data['token'],$data['email']);
            // dd(2222);
                return view('login.success');
        }else{

                //失败 回到添加页
                return back()->with('error','注册失败,请联系管理员');
        }
    }
     // public function register(Request $request)
     //    {
     //    $validator = Validator::make($request->all(), [
     //    $request->input('user') == $user->user
     //    ]);

     //    if ($validator->fails()) {
     //        return back()
     //            ->withErrors($validator)
     //            ->withInput('用户名已存在');
     //     }
     //    }

   // 生成验证码
   public function getVcode()
   {
        ob_clean();//清除输出缓存区的内容
        //生成验证码图片的Builder对象，配置相应属性
        $builder = new CaptchaBuilder;
        //可以设置图片宽高及字体
        $builder->build($width = 100, $height = 40, $font = null);
        //获取验证码的内容
        $phrase = $builder->getPhrase();
        //把内容存入session
        Session(['Vcode'=>$phrase]);
        //生成图片
        header("Cache-Control: no-cache, must-revalidate");
        header('Content-Type: image/jpeg');
        $builder->output();
   }

   // 发送邮件
   public function sendMail($id,$token,$email)
   {

        // $str='欢迎您登录注册请点击<a href="http://xiaogangpao.com/jihuo?id=?token=?">点击邮件进行激活</a>'
        Mail::send('email.welcome', ['id'=>$id,'token'=>$token], function ($message) use($email){
            $message->to($email)->subject('激活邮件');
        });

        // Mail::raw('美丽说欢迎你注册请点击.即可获取大量资源...', function ($message) {
        //     //设置邮件标题
        //     $message->subject('激活邮件');
        //     //发送给谁
        //     $message->to('1525469287@qq.com');
        // });

   }
   // *
    // * 激活
    
   public function jihuo(Request $request)
   {
    // 接收id
    $id=$request->input('id');
    $users=DB::table('member')->where('id',$id)->first();
    if($users && $users->token == $request->input('token')){
        // $res=DB::table('users')->where('id',$id)->update(['status'=2]);
        // if ($res) {
        //     echo '激活成功';
        //     return redirect('/')->with('success','激活成功');
        // }else{
        //     echo '激活失败';
        // }
    }else{
        echo "非法请求";   
    }

   }

    //忘记密码
    public function getForget()
    {
      return view('logs.forget');
    }

   
    //发送邮件找回密码

    public function doforget(Request $request)
    {
      // dd('222');
      //读取
      $user =DB::table('member')->where('email',$request->input('email'))->first();
      // dd($user);
      //发送邮件
      Mail::send('email.forget',['member'=>$user],function($message)use($user){
        // $m->from(env('MAIL_USERNAME'), Config::get('app.App_NAME'));

        $message->to($user->email)->subject('找回密码邮件');
      });
    }
    /**
     * 重置密码表单显示
     */
    public function reset(Request $request)
    {
        //检测 将需要修改的相对应的id和token是否传递过来
        $user=DB::table('member')->where('id',$request->input('id'))->where('token',$request->input('token'))->first();
        // dd($user);
        //解析模板
        return view('logs/reset',['member'=>$user]);
        
    }

    /**
     * 用户更新密码操作方法
     */
    public function doReset(Request $request)
    {
        
        // dd($user);
        $user=DB::table('member')->where('id',$request->input('id'))->where('token',$request->input('token'))->first();
        //信息

        $user->password=Hash::make($request->input('password'));
        $user->token=str_random(50);
        //修改:插入并替换掉原来数据库里的token
        $id = $user->id;
        $new = [];
        foreach ($user as $k => $v) {
            $new[$k] = $v;
        }
        //dd($new);
        $res = DB::table('member')->where('id',$id)->update($new);
        if($res){
            return redirect('/log/log')->with('error','密码修改成功请登录');
        }else{
            return back();
        }
    }

}

